Освобождает принимающий вариант и копирует исходный.
HRESULT VariantCopy ( VARIANTARG FAR* pvargDest, VARIANTARG FAR* pvargSrc );
Параметры
pvargDest
Указатель на VARIANTARG, принимающий
копию.
pvargSrc
Указатель на копируемый VARIANTARG.
Коды возврата
Из возвращенного HRESULT получают один из следующих
кодов возврата:
| Код возврата | Значение |
| S_OK | Успех. |
| DISP_E_ARRAYISLOCKED | Вариант содержит заблокированный массив. |
| DISP_E_BADVARTYPE | Исходный или принимающий вариант имеют недопустимый тип (обычно не инициализированы). |
| E_OUTOFMEMORY | He хватает памяти для копирования. |
| E_INVALIDARG | Один из аргументов неверен. |
Комментарии
Сначала память, владельцем которой является pvargDest,
освобождается так же, как при вызове VariantClear (pvargDest
должен указывать на инициализированный вариант, а не просто на
неинициализированный блок памяти). Затем в pvargDest помещается точная
копия содержимого pvargSrc.
Если pvargSrc имеет тип
VT_BSTR, то копируется строка. Если pvargSrc — это
VT_ARRAY, то копируется весь массив. Если pvargSrc — это
VT_DISPATCH или VT_UNKNOWN, то вызывается AddRef для
увеличения счетчика ссылок объекта.